//package net.sourceforge.simcpux;
//
//import java.io.StringReader;
//import java.util.HashMap;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Locale;
//import java.util.Map;
//import java.util.Random;
//
//import org.apache.http.NameValuePair;
//import org.apache.http.message.BasicNameValuePair;
//import org.xmlpull.v1.XmlPullParser;
//
//import android.app.Activity;
//import android.app.ProgressDialog;
//import android.os.AsyncTask;
//import android.os.Bundle;
//import android.util.Log;
//import android.util.Xml;
//import android.view.Window;
//
//import com.tencent.mm.sdk.modelpay.PayReq;
//import com.tencent.mm.sdk.openapi.IWXAPI;
//import com.tencent.mm.sdk.openapi.WXAPIFactory;
//
///**
// * 支付<br>
// * // 生成预支付订单ID -- prepay_id <br>
// * // 生成签名参数 <br>
// * https://open.weixin.qq.com/ 配置后台, 如果app的package name改变，则需要修改后台的配置
// *
// * @author coffee<br>
// *         2015-4-9下午7:11:41
// */
//public class WXPayActivity extends Activity {
//
//	private final String TAG = "pay_wx";
//
//	private PayReq req;
//	final IWXAPI msgApi = WXAPIFactory.createWXAPI(this, null);
//	// private TextView show;
//	private Map<String, String> resultunifiedorder;
//
//	@Override
//	protected void onCreate(Bundle savedInstanceState) {
//		requestWindowFeature(Window.FEATURE_NO_TITLE);
//		super.onCreate(savedInstanceState);
//		// setContentView(R.layout.pay);
//		// show = (TextView) findViewById(R.id.editText_prepay_id);
//		req = new PayReq();
//		msgApi.registerApp(WXConfig.APP_ID);
//		//
//		GetPrepayIdTask getPrepayId = new GetPrepayIdTask();
//		getPrepayId.execute();
//
//	}
//
//	/**
//	 * 生成签名
//	 */
//
//	private String genPackageSign(List<NameValuePair> params) {
//		StringBuilder sb = new StringBuilder();
//
//		for (int i = 0; i < params.size(); i++) {
//			sb.append(params.get(i).getName());
//			sb.append('=');
//			sb.append(params.get(i).getValue());
//			sb.append('&');
//		}
//		sb.append("key=");
//		sb.append(WXConfig.API_KEY);
//
//		String packageSign = MD5.getMessageDigest(sb.toString().getBytes()).toUpperCase(Locale.getDefault());
//		Log.d(TAG, packageSign);
//		return packageSign;
//	}
//
//	private String genAppSign(List<NameValuePair> params) {
//		StringBuilder sb = new StringBuilder();
//
//		for (int i = 0; i < params.size(); i++) {
//			sb.append(params.get(i).getName());
//			sb.append('=');
//			sb.append(params.get(i).getValue());
//			sb.append('&');
//		}
//		sb.append("key=");
//		sb.append(WXConfig.API_KEY);
//
//		String appSign = MD5.getMessageDigest(sb.toString().getBytes());
//		Log.d(TAG, appSign);
//		return appSign;
//	}
//
//	private String toXml(List<NameValuePair> params) {
//		StringBuilder sb = new StringBuilder();
//		sb.append("<xml>");
//		for (int i = 0; i < params.size(); i++) {
//			sb.append("<" + params.get(i).getName() + ">");
//			sb.append(params.get(i).getValue());
//			sb.append("</" + params.get(i).getName() + ">");
//		}
//		sb.append("</xml>");
//		Log.d(TAG, sb.toString());
//		return sb.toString();
//	}
//
//	private class GetPrepayIdTask extends AsyncTask<Void, Void, Map<String, String>> {
//
//		private ProgressDialog dialog;
//
//		@Override
//		protected void onPreExecute() {
//			dialog = ProgressDialog.show(WXPayActivity.this, "微信支付", "正在创建订单");
//		}
//
//		@Override
//		protected void onPostExecute(Map<String, String> result) {
//			if (dialog != null) {
//				dialog.dismiss();
//			}
//			resultunifiedorder = result;
//			// TODO -2
//			genPayReq();
//			sendPayReq();
//			finish();
//		}
//
//		@Override
//		protected void onCancelled() {
//			super.onCancelled();
//		}
//
//		@Override
//		protected Map<String, String> doInBackground(Void... params) {
//			String url = String.format("https://api.mch.weixin.qq.com/pay/unifiedorder");
//			String entity = genProductArgs();
//			Log.d(TAG, entity);
//			byte[] buf = WXUtils.httpPost(url, entity);
//			String content = new String(buf);
//			Log.d(TAG, content);
//			Map<String, String> xml = decodeXml(content);
//			return xml;
//		}
//	}
//
//	public Map<String, String> decodeXml(String content) {
//		try {
//			Map<String, String> xml = new HashMap<String, String>();
//			XmlPullParser parser = Xml.newPullParser();
//			parser.setInput(new StringReader(content));
//			int event = parser.getEventType();
//			while (event != XmlPullParser.END_DOCUMENT) {
//				String nodeName = parser.getName();
//				switch (event) {
//				case XmlPullParser.START_DOCUMENT:
//
//					break;
//				case XmlPullParser.START_TAG:
//					if ("xml".equals(nodeName) == false) {
//						// 实例化student对象
//						xml.put(nodeName, parser.nextText());
//					}
//					break;
//				case XmlPullParser.END_TAG:
//					break;
//				}
//				event = parser.next();
//			}
//			return xml;
//		} catch (Exception e) {
//			Log.d(TAG, e.toString());
//		}
//		return null;
//
//	}
//
//	private String genNonceStr() {
//		Random random = new Random();
//		return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes());
//	}
//
//	private long genTimeStamp() {
//		return System.currentTimeMillis() / 1000;
//	}
//
//	private String genOutTradNo() {
//		Random random = new Random();
//		return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes());
//	}
//
//	//
//	private String genProductArgs() {
//		StringBuffer xml = new StringBuffer();
//
//		try {
//			String nonceStr = genNonceStr();
//
//			xml.append("</xml>");
//			List<NameValuePair> packageParams = new LinkedList<NameValuePair>();
//			packageParams.add(new BasicNameValuePair("appid", WXConfig.APP_ID));
//			packageParams.add(new BasicNameValuePair("body", "APP pay test"));
//			packageParams.add(new BasicNameValuePair("mch_id", WXConfig.MCH_ID));
//			packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));
//			packageParams.add(new BasicNameValuePair("notify_url", "http://121.40.35.3/test"));
//			packageParams.add(new BasicNameValuePair("out_trade_no", genOutTradNo()));
//			packageParams.add(new BasicNameValuePair("spbill_create_ip", "127.0.0.1"));
//			packageParams.add(new BasicNameValuePair("total_fee", "1"));
//			packageParams.add(new BasicNameValuePair("trade_type", "APP"));
//
//			String sign = genPackageSign(packageParams);
//			packageParams.add(new BasicNameValuePair("sign", sign));
//
//			String xmlstring = toXml(packageParams);
//
//			return xmlstring;
//
//		} catch (Exception e) {
//			Log.e(TAG, "genProductArgs fail, ex = " + e.getMessage());
//			return null;
//		}
//
//	}
//
//	private void genPayReq() {
//
//		req.appId = WXConfig.APP_ID;
//		req.partnerId = WXConfig.MCH_ID;
//		req.prepayId = resultunifiedorder.get("prepay_id");
//		req.packageValue = "prepay_id=" + resultunifiedorder.get("prepay_id");
//		req.nonceStr = genNonceStr();
//		req.timeStamp = String.valueOf(genTimeStamp());
//
//		List<NameValuePair> signParams = new LinkedList<NameValuePair>();
//		signParams.add(new BasicNameValuePair("appid", req.appId));
//		signParams.add(new BasicNameValuePair("noncestr", req.nonceStr));
//		signParams.add(new BasicNameValuePair("package", req.packageValue));
//		signParams.add(new BasicNameValuePair("partnerid", req.partnerId));
//		signParams.add(new BasicNameValuePair("prepayid", req.prepayId));
//		signParams.add(new BasicNameValuePair("timestamp", req.timeStamp));
//
//		req.sign = genAppSign(signParams);
//
//		Log.d(TAG, signParams.toString());
//	}
//
//	private void sendPayReq() {
//		msgApi.registerApp(WXConfig.APP_ID);
//		// msgApi.openWXApp();
//		msgApi.sendReq(req);
//	}
//
//}
